CREATE database if NOT EXISTS `yiyi-boot` default character set utf8mb4 collate utf8mb4_general_ci;
USE `yiyi-boot`;

DROP TABLE IF EXISTS `sys_operate_log`;

/*==============================================================*/
/* Table: sys_operate_log                                  */
/*==============================================================*/
CREATE TABLE `sys_operate_log`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `user_id`              BIGINT COMMENT '用户编号',
    `tenant_id`            VARCHAR(20) DEFAULT NULL COMMENT '租户编号',
    `application_name`     VARCHAR(50) DEFAULT NULL COMMENT '应用名',
    `module`               VARCHAR(64) DEFAULT NULL COMMENT '模块',
    `name`                 VARCHAR(64) DEFAULT NULL COMMENT '操作名',
    `type`                 INT DEFAULT 0 COMMENT '操作分类',
    `user_ip`              VARCHAR(50) DEFAULT NULL COMMENT '用户ip',
    `user_agent`           VARCHAR(255) DEFAULT NULL COMMENT '浏览器UA',
    `request_method`       VARCHAR(64) DEFAULT NULL COMMENT '请求方式',
    `request_uri`          VARCHAR(128) DEFAULT NULL COMMENT '请求地址',
    `start_time`           DATETIME COMMENT '开始时间',
    `duration`             INT COMMENT '执行时长',
    `method_name`          VARCHAR(64) DEFAULT NULL COMMENT '方法名',
    `class_name`           VARCHAR(64) DEFAULT NULL COMMENT '类名',
    `params`               TEXT DEFAULT NULL COMMENT '参数',
    `result_data`          TEXT DEFAULT NULL COMMENT '结果数据',
    `exts`                 VARCHAR(512) DEFAULT NULL COMMENT '扩展字段',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME COMMENT '创建时间',
    `deleted`              TINYINT(1) DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT '操作日志表';


DROP TABLE IF EXISTS `sys_error_log`;

/*==============================================================*/
/* Table: sys_error_log                                    */
/*==============================================================*/
CREATE TABLE `sys_error_log`
(
    `id`                           BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `user_id`                      BIGINT COMMENT '用户编号',
    `tenant_id`                    VARCHAR(20) DEFAULT NULL COMMENT '租户编号',
    `application_name`             VARCHAR(50) NOT NULL COMMENT '应用名',
    `request_method`               VARCHAR(16) DEFAULT NULL COMMENT '请求方法名',
    `request_url`                  VARCHAR(255) DEFAULT NULL COMMENT '请求地址',
    `request_params`               VARCHAR(8000) DEFAULT NULL COMMENT '请求参数',
    `user_ip`                      VARCHAR(50) DEFAULT NULL COMMENT '用户IP',
    `user_agent`                   VARCHAR(512) DEFAULT NULL COMMENT '浏览器UA',
    `exception_time`               DATETIME DEFAULT NULL COMMENT '异常发生时间',
    `exception_name`               VARCHAR(128) DEFAULT NULL COMMENT '异常名',
    `exception_message`            TEXT COMMENT '异常导致的消息',
    `exception_root_cause_message` TEXT COMMENT '异常导致的根消息',
    `exception_stack_trace`        TEXT COMMENT '异常的栈轨迹',
    `exception_class_name`         VARCHAR(512) DEFAULT NULL COMMENT '异常发生的类全名',
    `exception_file_name`          VARCHAR(512) DEFAULT NULL COMMENT '异常发生的类文件',
    `exception_method_name`        VARCHAR(512) DEFAULT NULL COMMENT '异常发生的方法名',
    `exception_line_number`        INT COMMENT '异常发生的方法所在行',
    `process_status`               TINYINT DEFAULT 0 COMMENT '处理状态 0:未处理, 1:已处理, 2:已忽略',
    `process_time`                 DATETIME DEFAULT NULL COMMENT '处理时间',
    `process_user_id`              VARCHAR(64) DEFAULT NULL COMMENT '处理用户编号',
    `process_remarks`              VARCHAR(500) DEFAULT NULL COMMENT '处理备注',
    `create_user`                  VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`                  DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`                  VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`                  DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`                      TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT '异常日志表';


DROP TABLE IF EXISTS `sys_oss_config`;

/*==============================================================*/
/* Table: sys_oss_config                                   */
/*==============================================================*/
CREATE TABLE `sys_oss_config`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `name`                 VARCHAR(64) DEFAULT NULL COMMENT '配置名',
    `storage_code`         VARCHAR(16) NOT NULL COMMENT '存储器编号',
    `master`               TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否主配置',
    `config`               VARCHAR(4096) NOT NULL COMMENT '配置信息',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_storage_code` (`storage_code`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT 'oss配置表';

/*云存储器插入脚本配置数据自行替换*/
BEGIN;
INSERT INTO `sys_oss_config` (`name`, `storage_code`, `master`, `config`, `create_user`, `create_time`, `update_user`, `update_time`, `deleted`) VALUES ('数据库存储器','S10001','1','{\"@class\":\"com.zxjbyte.yiyi.framework.oss.storage.db.DbOssConfig\",\"domain\":\"http://127.0.0.1:8081\"}','-1',NOW(),'-1',NOW(),'0');
INSERT INTO `sys_oss_config` (`name`, `storage_code`, `master`, `config`, `create_user`, `create_time`, `update_user`, `update_time`, `deleted`) VALUES('本地存储器','S10002','1','{\"@class\":\"com.zxjbyte.yiyi.framework.oss.storage.local.LocalOssConfig\",\"writeBasePath\":\"E:\\\\Document\\\\ProjectData\\\\yiyi-boot\",\"domain\":\"http://127.0.0.1:8081\"}','-1',NOW(),'-1',NOW(),'0');
INSERT INTO `sys_oss_config` (`name`, `storage_code`, `master`, `config`, `create_user`, `create_time`, `update_user`, `update_time`, `deleted`) VALUES('s3-京东云','S10003','1','{\"@class\":\"com.zxjbyte.yiyi.framework.oss.storage.s3.S3OssConfig\",\"bucketName\":\"xxxx\",\"endpoint\":\"xxxx\",\"accessKey\":\"xxxx\",\"secretKey\":\"xxxx\"}','-1',NOW(),'-1',NOW(),'0');
COMMIT;

DROP TABLE IF EXISTS `sys_oss_record`;

/*==============================================================*/
/* Table: sys_oss_record                                        */
/*==============================================================*/
CREATE TABLE `sys_oss_record`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `storage_service`      VARCHAR(15) COMMENT '存储服务',
    `suffix`               VARCHAR(20) COMMENT '文件后缀',
    `original_name`        VARCHAR(255) NOT NULL COMMENT '原文件名',
    `file_size`            VARCHAR(20) COMMENT '文件大小',
    `path`                 VARCHAR(128) NOT NULL COMMENT '路径名',
    `url`                  VARCHAR(1024) NOT NULL COMMENT '文件地址',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_path` (`path`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT 'oss上传记录表';






DROP TABLE IF EXISTS `sys_oss_file`;

/*==============================================================*/
/* Table: sys_oss_file                                     */
/*==============================================================*/
CREATE TABLE `sys_oss_file`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `path`                 VARCHAR(128) NOT NULL COMMENT '路径名',
    `content`              MEDIUMBLOB NOT NULL COMMENT '文件内容',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_path` (`path`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT 'oss文件表';


DROP TABLE IF EXISTS `sys_dict`;

/*==============================================================*/
/* Table: sys_dict                                              */
/*==============================================================*/
CREATE TABLE `sys_dict`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `type`                 TINYINT NOT NULL COMMENT '字典类型：0-系统字典，1-业务字典',
    `dict_code`            VARCHAR(128) COMMENT '字典code',
    `dict_name`            VARCHAR(128) COMMENT '字典名称',
    `remark`               VARCHAR(500) COMMENT '备注',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT '字典表';


DROP TABLE IF EXISTS `sys_dict_item`;

/*==============================================================*/
/* Table: sys_dict_item                                         */
/*==============================================================*/
CREATE TABLE `sys_dict_item`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `dict_id`              BIGINT NOT NULL COMMENT '字典id',
    `sort`                 INT COMMENT '排序',
    `item_label`           VARCHAR(255) COMMENT '字典项标签',
    `item_value`           VARCHAR(255) COMMENT '字典项值',
    `css_class`            VARCHAR(100) COMMENT 'css类名',
    `style_json`           VARCHAR(1024) COMMENT '样式JSON',
    `status`               TINYINT DEFAULT 0 COMMENT '状态：0-启动，1-禁用',
    `remark`               VARCHAR(500) COMMENT '备注',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_dict_id` (`dict_id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT '字典项表';


BEGIN;
INSERT INTO `sys_dict` (`id`, `type`, `dict_code`, `dict_name`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES (1, 0, 'SYS_USER_ID_TYPE','证件类型','admin',NOW(),'admin',NOW());
INSERT INTO `sys_dict` (`id`, `type`, `dict_code`, `dict_name`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES(2, 0, 'DEV_CONFIG_CATEGORY','系统配置分类','admin',NOW(),'admin',NOW());
INSERT INTO `sys_dict_item` (`dict_id`, `sort`, `item_label`, `item_value`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES(1,'1','身份证','1','admin',NOW(),'admin',NOW());
INSERT INTO `sys_dict_item` (`dict_id`, `sort`, `item_label`, `item_value`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES(1,'2','护照','2','admin',NOW(),'admin',NOW());
INSERT INTO `sys_dict_item` (`dict_id`, `sort`, `item_label`, `item_value`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES(2,'1','系统基础','SYSTEM_BASE','admin',NOW(),'admin',NOW());
INSERT INTO `sys_dict_item` (`dict_id`, `sort`, `item_label`, `item_value`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES(2,'2','业务定义','BIZ_DEFINE','admin',NOW(),'admin',NOW());
COMMIT;


DROP TABLE IF EXISTS `sys_dev_config`;

/*==============================================================*/
/* Table: sys_dev_config                                        */
/*==============================================================*/
CREATE TABLE `sys_dev_config`
(
    `id`                   BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `config_key`           VARCHAR(64) NOT NULL COMMENT '配置键',
    `config_value`         TEXT COMMENT '配置值',
    `category`             VARCHAR(64) COMMENT '分类',
    `remark`               VARCHAR(500) COMMENT '备注',
    `create_user`          VARCHAR(64) DEFAULT NULL COMMENT '创建用户',
    `create_time`          DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_user`          VARCHAR(64) DEFAULT NULL COMMENT '更新用户',
    `update_time`          DATETIME DEFAULT NULL COMMENT '更新时间',
    `deleted`              TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (`id`),
    KEY `idx_key` (`config_key`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT '系统配置表';

BEGIN;
INSERT INTO `sys_dev_config` (`config_key`, `config_value`, `category`, `create_user`, `create_time`, `update_user`, `update_time`) VALUES('DEFAULT_USER_PASSWORD','admin_yy','SYSTEM_BASE','admin',NOW(),'admin',NOW());
COMMIT;
